MySQL日志管理

365次阅读
没有评论

共计 2826 个字符,预计需要花费 8 分钟才能阅读完成。

错误日志

记录 MySQL 从启动以来,所有的状态、警告、错误。为我们定位数据库问题,提供帮助。

查看数据库日志路径:select @@log_error;

默认是开启状态,文件位于 /datadir/hostname.err,也可以通过 my.cnf 自定义文件位置:log_error=/tmp/mysql.log,重启 MySQL 生效。

二进制日志

作用是记录数据库变化(DDL,DCL,DML)性质的日志,是逻辑层性质日志。应用在数据恢复,主从复制中。

8.0 版本以前,默认没有开启,建议生产开启,且一定要和数据盘分开。

配置方法:vim /etc/my.cnf

server_id=6 # 主机编号。主从中使用,5.7 以后开 binlog 要加此参数
log_bin=/data/binlog/mysql-bin # 日志存放目录 + 日志名前缀,例如 mysgl-bin.000001、mysq1-bin.000002
sync_binlog=1 # binlog 日志刷盘策略,1 是每次事务提交立即刷写 binlog 到磁盘
binlog_format=row # binlog 记录格式为 row 模式 

记录内容

bin1og 是 SQL 层的功能,记录变更的 SQL 语句,不记录查询语句。

记录 SQL 语句种类

  • DDL:原封不动记录当前 DDL 语句
  • DCL:原封不动记录当前 DCL 语句
  • DML:只记录已经提交的事务 DML(insert、update、delete)

DML 三种记录方式,受 binlog_format 参数影响,建议使用 row 记录模式:

  • statement(statement based replication, SBR)5.6 默认:以语句模式原封不动记录当前 DML
  • row(row based replication, RBR)5.7 默认:以行模式记录数据行的变化,用户看不懂,需要工具分析
  • mixed(mixed based replication, MBR):混合模式,以上两种模式的混合

🤔SBR 与 RBR 模式对比?

  • statement:可读性较高,日志量少,不够严谨
  • row:可读性很低,日志量大,足够严谨

记录单元

事件是二进制日志的最小记录单元。对于 DDL、DCL,一个语句就是一个 event,对于 DML 语句来讲,只记录已提交的事务。

例如以下列子,就被分为了 4 个 event:

        position(start-stop)begin;  120 - 340
DML1    340 - 460
DML2    460 - 550
commit; 550 - 760

位置号(position)的作用是为了方便截取事件。

事件组成:

  • 事件开始标识:at 194
  • 事件内容
  • 事件结束标识:end_log_pos 254

查看日志

查看是否开启:select @@log_bin;

查看文件保存路径:select @@log_bin_basename;

查看目前有几个日志文件:show binary logs;

查看当前使用的 binlog:show master status;

查看二进制日志事件:show binlog events in ‘binlog 文件 ’;

事件查看:mysql -e “show binlog events in ‘binlog 文件 '” | grep DROP

内容查看:mysqlbinlog ‘binlog 文件 ’ >/tmp/a.sql

翻译数据行:mysqlbinlog –base64-output=decode-rows -vvv ‘binlog 文件 ’ >/tmp/b.sql

恢复日志

滚动一个新日志:flush logs; 或 mysqladmin flush-logs 或 重启数据库

截取二进制日志:mysqlbinlog –start-position=219 –stop-position=335 ‘binlog 文件 ’ >/tmp/c.sql

恢复日志:

  1. 临时关闭日志:set sql_log_bin=0;
  2. 导入 SQL 语句:source /mnt/bin.sql
  3. 恢复日志:set sql_log_bin=1;

日志删除

自动删除机制:select @expire_logs_days;
默认是 0,代表永不删除,单位是天。设置多少天合适:一次全备份周期 7 + 1 天,生产环境一般建议,最少 2 个全备份周期 +1,即 15 天。

手工删除,例如,删除某个日志之前的日志(正在使用的日志文件不能清理):purge binary logs to ‘mysql-bin.000005’;

删除某个时间点之前的日志:purge binary logs before ‘2024-01-01 22:11:11’;

全部清空:reset master;,比较危险,在主库执行此操作,主从必宕。

GTID

5.6 版本新加特性,5.7 8.0 中做了加强。5.6 中不开启,没有这个功能,5.7 中 GTID 即使不开也会有自动生成。

GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。GTID 组成:server_uuid:transaction_id。

开启 GTID,vim /etc/my.cnf:

gtid-mode=on
enforce-gtid-consistency=true

基于 GTID 截取日志:mysqlbinlog –skip-gtids –include-gtids=’d980595d-c934-11e9-bbfc-000c29d70b6d:1-2′ mysql-bin.000003 mysql-bin.000004 >/tmp/gtid.sql

GTID 幂等性:在基于 GTID 进行数据恢复时,如果在截取 GTID 记录时没加 –skip-gtids 选项,那么,在使用 source 命令导入 sql 文件进行数据恢复时,会发现数据并没有恢复成功。这是因为当前系统中已经有了这些 GTID 记录,而基于幂等性机制,已经有的 GTID 是不会进行操作的,既然不会进行操作,那自然数据恢复就不会成功了。

慢日志

记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认 10 秒)的所有 SQL 语句的日志。

查看慢日志开关状态:select @@slow_query_log;,默认没有开启,需要修改配置文件 /etc/my.cnf:

# 开启慢日志查询开关
slow_query_log=1

# 设置慢查询时间阈值为 2 秒
long_query_time=2

配置完毕之后,重启 MySQL 服务器,查看慢日志文件(查看文件存放位置:select @@slow_query_log_file;)中记录的信息。

查看慢日志文件尾部实时输出内容:tail -f localhost-slow.log

查看不走索引的语句记录:select @@log_queries_not_using_indexes;

慢语句分析

命令:mysqldumpslow -s c -t 5 慢日志文件:

  • -s sort,表示按照何种方式排序,c、t、l、r 分别按照记录次数、时间、查询时间、返回记录数来排序,ac、at、al、ar 表示相应的倒序
  • -t top,即返回前面多少条数据

正文完
 0
阿伯手记
版权声明:本站原创文章,由 阿伯手记 于2024-02-02发表,共计2826字。
转载说明:本站原创内容,除特殊说明外,均基于 CC BY-NC-SA 4.0 协议发布,转载须注明出处与链接。
评论(没有评论)
验证码

阿伯手记

阿伯手记
阿伯手记
喜欢编程,头发渐稀;成长路上,宝藏满地
文章数
767
评论数
207
阅读量
683515
今日一言
-「
热门文章
职场救急!AI请假话术生成器:1秒定制高通过率理由

职场救急!AI请假话术生成器:1秒定制高通过率理由

超级借口 不好开口?借口交给我!智能生成工作请假、上学请假、饭局爽约、约会拒绝、邀约推辞、万能借口等各种借口理...
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
TVAPP:开源电视盒子资源库,一键打造家庭影院

TVAPP:开源电视盒子资源库,一键打造家庭影院

导语 TVAPP 是一个专为 Android TV 电视盒子用户打造的开源影音资源库,集成了影视、直播、游戏等...
巴别英语:用美剧和TED演讲轻松提升英语听力与口语

巴别英语:用美剧和TED演讲轻松提升英语听力与口语

还在为枯燥的英语学习而烦恼吗?巴别英语通过创新的美剧学习模式,让英语学习变得生动有趣。平台提供海量美剧和 TE...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2025年12月 每日精选

2025年12月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 12 月 26 日 .ax 顶级域 目前全球唯一...
123云盘限时福利:登录即送1个月VIP尊享权益!

123云盘限时福利:登录即送1个月VIP尊享权益!

🎁  零成本体验 20T 超大空间与会员加速通道 🎉 活动亮点 登录即送:无需任何复杂操作,登录账号直接领取 ...
最新评论
阿伯手记 阿伯手记 发了:https://aboss.top/moments/1064
吴蛋蛋 吴蛋蛋 快发小年快乐
吴蛋蛋 吴蛋蛋 Ask4Me,这个之前看server酱接入了
15220202929 15220202929 怎么用
八对 八对 麻烦大佬更新下【堆新】的友链站名:八对星星描述:极目星视穹苍无界•足履行者大地有疆链接:https://8dui.com图标:https://cf.8dui.com/logo.webp横标:https://cf.8dui.com/logo-w.webp订阅:https://8dui.com/rss.xml
三毛笔记 三毛笔记 已添加
DUINEW DUINEW 已添加贵站,期待贵站友链~博客名称:堆新博客地址:https://duinew.com/博客描述:堆新堆新,引力向新!——堆新(DUINEW)博客头像:https://d.duinew.com/logo.webp横版头像:https://d.duinew.com/logo-w.webp博客订阅:https://duinew.com/rss.xml
hedp hedp 没看懂
bingo bingo 直接生成就可以啦,也可以添加一些选项
热评文章
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 是一款基于 Fastify、Vercel 和 Supabase 构建的 URL 缩短服务...
清华大学官方免费DeepSeek教程

清华大学官方免费DeepSeek教程

AI 领域近期最引人注目的焦点当属 DeepSeek,这款由中国创新企业深度求索研发的人工智能工具,正以开放源...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2026年2月 每日精选

2026年2月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 2 月 17 日 国家全民健身信息服务平台 过年...
DrawLink:一键生成链接视觉卡片,提升分享点击率

DrawLink:一键生成链接视觉卡片,提升分享点击率

小贴士 :此站或已变迁,但探索不止步。我们已为您备好「类似网站」精选合集,相信其中的发现同样能为您带来惊喜。
WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror 是一款基于 WebRTC 技术的在线屏幕共享工具,它利用浏览器内置的...